Micron Document
🎖️GitЯра🎖️

Node / meshcore / MeshCore / files / src / helpers / ESP32Board.cpp

Displaying Raw • Download

src/helpers/ESP32Board.cpp 890a2e2cffa98dea3ca88db3c3aba72ef23ff3f7 (890a2e2c) Text, 2.36 KB

Tff7b72#Tff7b72ifdef ESP_PLATFORM

Tff7b72#Tff7b72include T8b949e"ESP32Board.h"
Tff7b72#Tff7b72include T8b949e<target.h>

Tff7b72#Tff7b72if defined(ADMIN_PASSWORD) && !defined(DISABLE_WIFI_OTA) T8b949e// Repeater or Room Server only
Tff7b72#Tff7b72include T8b949e<WiFi.h>
Tff7b72#Tff7b72include T8b949e<AsyncTCP.h>
Tff7b72#Tff7b72include T8b949e<ESPAsyncWebServer.h>
Tff7b72#Tff7b72include T8b949e<AsyncElegantOTA.h>

Tff7b72#Tff7b72include T8b949e<SPIFFS.h>

Tffa657bool Td2a8ffESP32Board::startOTAUpdateTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3idTb4b4b4, Tffa657char Te6edf3replyTb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Te6edf3inhibit_sleep Tff7b72= Tffa657trueTb4b4b4; T8b949e// prevent sleep during OTA
Te6edf3WiFiTb4b4b4.Te6edf3softAPTb4b4b4(Ta5d6ff"Ta5d6ffMeshCore-OTATa5d6ff"Tb4b4b4, Tffa657NULLTb4b4b4)Tb4b4b4;

Te6edf3sprintfTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffStarted: http://%s/updateTa5d6ff"Tb4b4b4, Te6edf3WiFiTb4b4b4.Te6edf3softAPIPTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3c_strTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3MESH_DEBUG_PRINTLNTb4b4b4(Ta5d6ff"Ta5d6ffstartOTAUpdate: %sTa5d6ff"Tb4b4b4, Te6edf3replyTb4b4b4)Tb4b4b4;

Tff7b72static Tffa657char Te6edf3id_bufTb4b4b4[T79c0ff60Tb4b4b4]Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3id_bufTb4b4b4, Ta5d6ff"Ta5d6ff%s (%s)Ta5d6ff"Tb4b4b4, Te6edf3idTb4b4b4, Te6edf3getManufacturerNameTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72static Tffa657char Te6edf3home_bufTb4b4b4[T79c0ff90Tb4b4b4]Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3home_bufTb4b4b4, Ta5d6ff"Ta5d6ff<H2>Hi! I am a MeshCore Repeater. ID: %s</H2>Ta5d6ff"Tb4b4b4, Te6edf3idTb4b4b4)Tb4b4b4;

Te6edf3AsyncWebServerTff7b72* Te6edf3server Tff7b72= Tff7b72new Te6edf3AsyncWebServerTb4b4b4(T79c0ff80Tb4b4b4)Tb4b4b4;

Te6edf3serverTff7b72-Tff7b72>Te6edf3onTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4, Te6edf3HTTP_GETTb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4(Te6edf3AsyncWebServerRequest Tff7b72*Te6edf3requestTb4b4b4) Tb4b4b4{
Te6edf3requestTff7b72-Tff7b72>Te6edf3sendTb4b4b4(T79c0ff200Tb4b4b4, Ta5d6ff"Ta5d6fftext/htmlTa5d6ff"Tb4b4b4, Te6edf3home_bufTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3serverTff7b72-Tff7b72>Te6edf3onTb4b4b4(Ta5d6ff"Ta5d6ff/logTa5d6ff"Tb4b4b4, Te6edf3HTTP_GETTb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4(Te6edf3AsyncWebServerRequest Tff7b72*Te6edf3requestTb4b4b4) Tb4b4b4{
Te6edf3requestTff7b72-Tff7b72>Te6edf3sendTb4b4b4(Te6edf3SPIFFSTb4b4b4, Ta5d6ff"Ta5d6ff/packet_logTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftext/plainTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Te6edf3AsyncElegantOTATb4b4b4.Te6edf3setIDTb4b4b4(Te6edf3id_bufTb4b4b4)Tb4b4b4;
Te6edf3AsyncElegantOTATb4b4b4.Te6edf3beginTb4b4b4(Te6edf3serverTb4b4b4)Tb4b4b4; T8b949e// Start ElegantOTA
Te6edf3serverTff7b72-Tff7b72>Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72return Tffa657trueTb4b4b4;
Tb4b4b4}

Tff7b72#Tff7b72else
Tffa657bool Td2a8ffESP32Board::startOTAUpdateTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3idTb4b4b4, Tffa657char Te6edf3replyTb4b4b4[Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657falseTb4b4b4; T8b949e// not supported
Tb4b4b4}
Tff7b72#Tff7b72endif

Tffa657void Td2a8ffESP32Board::powerOffTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3enterDeepSleepTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4; T8b949e// Do not wakeup
Tb4b4b4}

Tffa657void Td2a8ffESP32Board::enterDeepSleepTb4b4b4(Tffa657uint32_t Te6edf3secsTb4b4b4) Tb4b4b4{
T8b949e// Power off the display if any
Tff7b72#Tff7b72ifdef DISPLAY_CLASS
Te6edf3displayTb4b4b4.Te6edf3turnOffTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif

T8b949e// Power off LoRa
Te6edf3radio_driverTb4b4b4.Te6edf3powerOffTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// Keep LoRa inactive during deepsleep
Te6edf3digitalWriteTb4b4b4(Te6edf3P_LORA_NSSTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72if defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)
Te6edf3gpio_hold_enTb4b4b4(Tb4b4b4(Te6edf3gpio_num_tTb4b4b4)Te6edf3P_LORA_NSSTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72else
Te6edf3rtc_gpio_hold_enTb4b4b4(Tb4b4b4(Te6edf3gpio_num_tTb4b4b4)Te6edf3P_LORA_NSSTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif

T8b949e// Power off GPS if any
Tff7b72if Tb4b4b4(Te6edf3sensorsTb4b4b4.Te6edf3getLocationProviderTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72= Tffa657NULLTb4b4b4) Tb4b4b4{
Te6edf3sensorsTb4b4b4.Te6edf3getLocationProviderTb4b4b4(Tb4b4b4)Tff7b72-Tff7b72>Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Flush serial buffers
Te6edf3SerialTb4b4b4.Te6edf3flushTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3delayTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;

T8b949e// Clear stale wakeup sources to avoid ghost wakeup
T8b949e// This is required when Power Management and automatic lightsleep are enabled
Te6edf3esp_sleep_disable_wakeup_sourceTb4b4b4(Te6edf3ESP_SLEEP_WAKEUP_ALLTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3secs Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3esp_sleep_enable_timer_wakeupTb4b4b4(Te6edf3secs Tff7b72* T79c0ff1000000ULLTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Finally set ESP32 into deepsleep
Te6edf3esp_deep_sleep_startTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// CPU halts here and never returns!
Tb4b4b4}
Tff7b72#Tff7b72endif

Served by rngit 1.5.0 - Generated in 0.08s